package swb.api.com.schedule;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import swb.api.com.repository.SmsVerificationCodeRepository;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

@Slf4j
@Component
@Transactional
public class ScheduledTasks {

    @Autowired
    private SmsVerificationCodeRepository smsVerificationCodeRepository;
    private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

    /**
     * 每5分钟执行一次的定时任务示例
     */
    @Scheduled(fixedRate = 300000) // 100000毫秒 = 1分钟
    @Transactional
    public void reportCurrentTime() {
        log.info("清理过期验证码: 当前时间 {}", formatter.format(LocalDateTime.now()));
        // 在这里添加具体的业务逻辑
        try {
            smsVerificationCodeRepository.deleteExpiredCodes(LocalDateTime.now());
            log.info("清理过期验证码完成");
        } catch (Exception e) {
            log.error("清理过期验证码失败", e);
        }
    }

//    /**
//     * 每天凌晨2点执行的定时任务
//     */
//    @Scheduled(cron = "0 0 2 * * ?")
//    public void dailyTask() {
//        log.info("每日定时任务执行: {}", formatter.format(LocalDateTime.now()));
//        // 添加每日清理或统计等业务逻辑
//    }
//
//    /**
//     * 每周一上午9点执行的定时任务
//     */
//    @Scheduled(cron = "0 0 9 ? * MON")
//    public void weeklyTask() {
//        log.info("每周定时任务执行: {}", formatter.format(LocalDateTime.now()));
//        // 添加周报生成等业务逻辑
//    }
}
